package br.com.conciliador.seguranca.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.Session;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.conciliador.cadastro.vo.EstEmpresaVo;
import br.com.r2.util.tipodado.CNPJ;
import br.com.r2.util.tipodado.DataHora;
import br.com.r2.util.tipodado.Flag;
import br.com.r2.util.tipodado.InteiroLongo;
import br.com.r2.util.tipodado.Texto;

@Entity
@Table(name="TBUSR")
@Proxy(lazy=true)
public class UsuarioVo implements Serializable
{
	
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "USRCD")
	@GeneratedValue(generator = "InteiroSequenceGenerator")
	@GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.r2.util.tipodado.hibernate.generator.InteiroSequenceGenerator", parameters = { @Parameter(name = "sequence", value = "SQUSR") })
	@Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
	private InteiroLongo codigo;
	
	@Column(name = "USRNM")
	@Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
	private Texto nome;
	
	@Column(name = "USRFGATV")
	@Type(type = "br.com.r2.util.tipodado.hibernate.FlagUT")
	private Flag flagAtivo;

	@Column(name = "USRLGN")
	@Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
	private Texto login;
	
	@Column(name = "USRSNH")
	private String senha;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDINC")
	private UsuarioVo usuarioInclusaoVo;
	
	@Column(name = "USRDTINC")
	@Type(type = "br.com.r2.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataInclusao;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDALT")
	private UsuarioVo usuarioAlteracaoVo;
	
	@Column(name = "USRDTALT")
	@Type(type = "br.com.r2.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataAlteracao;

	@Column(name = "CNPJ")
	@Type(type = "br.com.r2.util.tipodado.hibernate.CnpjUT")
	private CNPJ cnpj;

    @Column(name = "USRFGALTSNH")
    @Type(type = "br.com.r2.util.tipodado.hibernate.FlagUT")
    private Flag flagAlterarSenha;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "EST_EMPRESA")
    private EstEmpresaVo estEmpresaVo;
    
    @Transient
    private String senhaAtual;
    
    @Transient
    private String confirmacaoSenha;
    
    @Transient
    private Session sessao;
    
	public Session getSessao() {
		return sessao;
	}

	public void setSessao(Session sessao) {
		this.sessao = sessao;
	}

	public InteiroLongo getCodigo()
	{
		return codigo;
	}

	public void setCodigo(InteiroLongo codigo)
	{
		this.codigo = codigo;
	}

	public Texto getNome()
	{
		return nome;
	}

	public void setNome(Texto nome)
	{
		this.nome = nome;
	}

	public Flag getFlagAtivo()
	{
		return flagAtivo;
	}

	public void setFlagAtivo(Flag flagAtivo)
	{
		this.flagAtivo = flagAtivo;
	}

	public Texto getLogin()
	{
		return login;
	}

	public void setLogin(Texto login)
	{
		this.login = login;
	}

	public String getSenha()
	{
		return senha;
	}

	public void setSenha(String senha)
	{
		this.senha = senha;
	}

	public UsuarioVo getUsuarioInclusaoVo()
	{
		return usuarioInclusaoVo;
	}

	public void setUsuarioInclusaoVo(UsuarioVo usuarioInclusaoVo)
	{
		this.usuarioInclusaoVo = usuarioInclusaoVo;
	}

	public DataHora getDataInclusao()
	{
		return dataInclusao;
	}

	public void setDataInclusao(DataHora dataInclusao)
	{
		this.dataInclusao = dataInclusao;
	}

	public UsuarioVo getUsuarioAlteracaoVo()
	{
		return usuarioAlteracaoVo;
	}

	public void setUsuarioAlteracaoVo(UsuarioVo usuarioAlteracaoVo)
	{
		this.usuarioAlteracaoVo = usuarioAlteracaoVo;
	}

	public DataHora getDataAlteracao()
	{
		return dataAlteracao;
	}

	public void setDataAlteracao(DataHora dataAlteracao)
	{
		this.dataAlteracao = dataAlteracao;
	}

   public CNPJ getCnpj()
   {
      return cnpj;
   }

   public void setCnpj(CNPJ cnpj)
   {
      this.cnpj = cnpj;
   }

   public Flag getFlagAlterarSenha()
   {
      return flagAlterarSenha;
   }

   public void setFlagAlterarSenha(Flag flagAlterarSenha)
   {
      this.flagAlterarSenha = flagAlterarSenha;
   }

   public EstEmpresaVo getEstEmpresaVo()
   {
      return estEmpresaVo;
   }

   public void setEstEmpresaVo(EstEmpresaVo empresaVo)
   {
      this.estEmpresaVo = empresaVo;
   }

   public String getSenhaAtual()
   {
      return senhaAtual;
   }

   public void setSenhaAtual(String senhaAtual)
   {
      this.senhaAtual = senhaAtual;
   }

   public String getConfirmacaoSenha()
   {
      return confirmacaoSenha;
   }

   public void setConfirmacaoSenha(String confirmacaoSenha)
   {
      this.confirmacaoSenha = confirmacaoSenha;
   }

}
